#!/bin/sh
# 使用 root 权限运行！这是可选的 
if [ "$(id -u)" != "0" ] ; then
    sudo sh ${0}
    exit 1
fi
 
PACKAGE=包名
EXEC=${PACKAGE}
VERSION=1.0.0
SIZE=1024
MAINTAINER=thinkyoung        
ICON=${PACKAGE}.svg
SECTION=utils
DESCRIPTION=${PACKAGE}
ARCH=amd64 

#如何打包如这个样子的 test-1.0.0-amd64.deb 可如下定义变量 自定义指定生成到 /tmp 下生成
DEBDIR=/tmp/${PACKAGE}-${VERSION}-${ARCH}
 
#可执行程序的所在位置 
EXECDIR=/tmp/${PACKAGE}
ICONDIR=/tmp/${PACKAGE}

#获取文件大小 KB
SIZE=`du -s ${EXECDIR} | awk '{print int($1)}'`

#获取系统架构 
#ARCH=$(uname -m)
#if [ ${ARCH} == "x86_64" ] ; then
#    ARCH=amd64
#elif [ ${ARCH} == "aarch64" ]; then
#    ARCH=arm64
#elif [ ${ARCH} == "mips64" ]; then
#    ARCH=mips64el
#fi


#获取当前的操作系统名称 如Ubuntu
#OS=$(awk -F= '$1=="NAME" {gsub("[\" ]", "", $2); print tolower($2)}' /etc/os-release)
#if [ "${OS}" != "${OS#neokylin}" ]; then
#    OS="deepin"
#fi

make_deb()
{
    rm -rf ${DEBDIR}        #先删除原先的 避免混乱
    mkdir -p ${DEBDIR}/DEBIAN
    mkdir -p ${DEBDIR}/opt/${PACKAGE}
    mkdir -p ${DEBDIR}/usr/share/applications
    mkdir -p ${DEBDIR}/usr/share/icons
    cp ${ICONDIR}/${ICON} ${DEBDIR}/usr/share/icons        #假定图片名称和可执行程序名一样
 
cat  << EOF > ${DEBDIR}/DEBIAN/control
Package: ${PACKAGE}
Version: ${VERSION}
Installed-Size: ${SIZE}
Section: ${SECTION}
Priority: optional
Architecture: ${ARCH}
Maintainer: ${MAINTAINER}        
Description: ${DESCRIPTION}

EOF
 
cat  << EOF > ${DEBDIR}/DEBIAN/postinst
#!/bin/sh
echo 'The program has been installed'
# 刷新图标缓存，桌面数据库和mime类型数据库，防止安装后desktop文件不出现在软件列表/没有图标
update-icon-caches /usr/share/icons/hicolor || true
update-desktop-database /usr/share/applications || true
update-mime-database /usr/share/mime || true

EOF

cat  << EOF > ${DEBDIR}/DEBIAN/prerm
#!/bin/sh
echo 'Program ready for uninstallation'

EOF

cat  << EOF > ${DEBDIR}/DEBIAN/postrm
#!/bin/sh
echo 'The program has been uninstalled'

EOF

cp -r ${EXECDIR}/* ${DEBDIR}/opt/${PACKAGE}        #把程序和程序依赖的库复制过去
 
#下面是快捷方式的文件 #gksu 这个命令可以对该程序提权 pkexec 不可以
cat  << EOF  > ${DEBDIR}/usr/share/applications/${EXEC}.desktop
[Desktop Entry]
Name=${PACKAGE}
Type=Application
Exec=/opt/${PACKAGE}/${EXEC}        
Icon=/usr/share/icons/${ICON}
EOF

chmod 775 ${DEBDIR} -R        #有些文件需要权限 在这里将该树下文件都做了修改
dpkg -b ${DEBDIR}        #deb打包命令 -b == --build
}
make_deb        #在脚本中调用函数不需要小括号 直接写函数名执行
 
#end